package com.time.admin.domain.entity;

import lombok.Builder;
import lombok.Data;

import java.util.List;

/**
 * 配置信息BO类
 *
 * @author: HuangQi
 * @date: Created in 17:08 2025/11/11
 * @description: 配置信息BO类
 */
@Data
public class SettingBO {

    /**
     * 网站相关设置
     */
    private WebsiteSetting website;

    /**
     * 邮件相关设置
     */
    private EmailSetting email;

    /**
     * 备份相关设置
     */
    private BackupSetting backup;

    @Data
    @Builder
    public static class WebsiteSetting {

        /**
         * 网站名称
         */
        private String siteName;

        /**
         * 网站描述
         */
        private String description;

        /**
         * 网站关键词（SEO）
         */
        private String keywords;

        /**
         * 网站 Logo 地址
         */
        private String logoUrl;

        /**
         * 网站图标（favicon 等）地址
         */
        private String faviconUrl;

        /**
         * 备案信息
         */
        private String icp;

        /**
         * 版权信息
         */
        private String copyright;

        /**
         * 联系邮箱
         */
        private String contactEmail;
    }

    @Data
    @Builder
    public static class EmailSetting {

        /**
         * 是否启用邮件发送
         */
        private boolean enabled;

        /**
         * 默认发件人邮箱地址
         */
        private String defaultFrom;

        /**
         * SMTP 服务器地址
         */
        private String host;

        /**
         * SMTP 端口号
         */
        private int port;

        /**
         * 登录用户名
         */
        private String username;

        /**
         * 登录密码或授权码
         */
        private String password;

        /**
         * 发件人显示名称
         */
        private String fromName;

        /**
         * 是否启用 SSL
         */
        private boolean sslEnabled;
    }

    @Data
    @Builder
    public static class BackupSetting {

        /**
         * 是否启用自动备份
         */
        private Boolean enabled;

        /**
         * 备份频率
         */
        private String frequency;

        /**
         * 保留备份次数
         */
        private Integer keepCount;

        /**
         * 备份内容列表
         */
        private List<String> contents;
    }
}
